<?php

/**
 * StringHelper short summary.
 *
 * StringHelper description.
 *
 * @version 1.0
 * @author jrodriguez
 */
class StringBuilder
{
    //@Valor. 
    protected $value;

    //Metodo statico para hacer una nueva linea.
    public static function nl(){
        echo "\n";
    }
    //Metodo statico para crear una nueva linea con el tag de html.
    public static function br(){
        echo "<br />";
    }
   
    public function __construct($txt = ''){
        $this->value = $txt;
    }
    
    //convierte a string
    public function __toString(){
        return $this->value;
    }
    
    //hace un echo del parametro pasado
    public static function write($string = ""){
        echo $string;
    }
    //Convierte a mayuscula
    public function toUpperCase(){
        return strtoupper($this->value);
    }
    
    //convierte a minuscula
    public function toLowerCase(){
        return strtolower($this->value);
    }
    
    //devuelve un array de string dividiendo el string actual por el separador que le pasamos
    public function split($delimiter = ''){
        if($delimiter){
            return explode($delimiter, $this->value);
        }                
        return array();
    }
    /*
    @param int posicion del caracter que se busca.
    @return string caracter que se encuentra en la posicion indicada.
     */
    public function charAt($index = 0){
        return substr($this->value, $index, 1);
    }
    //devuelve un has del string
    public function sha1(){
        return sha1($this->value);
    }
    //remueve los espaciosal principio y final del string
    public function trim(){
        return trim($this->value);
    }
    //Concatena al string actual el valor pasado por parametro
    public function concat($complement = ""){
        return $this->value . $complement;
    }
    //devuelve el tamanio del string actual
    public function length(){
        return strlen($this->value);
    }
    //reemplaza el valor buscado por el indicado
    public function replace($search = '', $replacement = ''){
        if(!$search && !$replacement){
            return $this->value;
        }
        if(substr($search, 0, 1) == '/' && substr($search, -1, 1) == '/' && strlen($search) > 2){
            $search = ereg_replace('^/', '', $search);
            $search = ereg_replace('/$', '', $search);
            return ereg_replace($search, $replacement, $this->value);
        }else{
            return str_replace($search, $replacement, $this->value);
        }
    }
    //hace un echo del valor actual
    public function display(){
        echo $this->value;
    }
    //setea el valor actual
    public function set($txt = ''){
        $this->value = $txt;
    }
    //devuelve parte del string actual
    public function substring($begin = 0, $end){
        if(!isset($end)){
            $end = $this->length();
        }
        if($end <= $begin){
            return "";
        }
        return substr($this->value, $begin, $end - $begin);
    }
}
